package com.spring.demo1;

import java.lang.reflect.TypeVariable;
import java.util.Arrays;

/**
 * @author vhans
 */
public class AnnTypeTest<@AnnType("我在类声明的一个泛型类型变量T0上") T0, @AnnType("我在类声明的一个泛型类型变量T1上") T1> {

    public <@AnnType("我在方法声明的泛型变量T2上") T2> void m1() {
    }

    public static void main(String[] args) throws NoSuchMethodException {
        for (TypeVariable typeVariable : AnnTypeTest.class.getTypeParameters()) {
            print(typeVariable);
        }

        for (TypeVariable typeVariable : AnnTypeTest.class.getDeclaredMethod("m1").getTypeParameters()) {
            print(typeVariable);
        }
    }

    private static void print(TypeVariable typeVariable) {
        System.out.println("类型变量名称:" + typeVariable.getName());
        Arrays.stream(typeVariable.getAnnotations()).forEach(System.out::println);
    }
}
